var express = require("express");
var router = express.Router();
const { readFile, writeFile, mkdir, readdirSync } = require("fs");

router.post("/getFileslist", async function (req, res, next) {
  readFile("./json/test.json", "utf-8", (err, data) => {
    if (!err) {
      res.send(data);
    } else {
      res.send(err);
    }
  });
});

/**
 * 获取导航列表接口
 */
router.post("/getNavList", async (req, res, next) => {
  readFile("./json/nav/nav-list.json", "utf-8", (err, data) => {
    if (!err) {
      res.send(data);
    } else {
      res.send(err);
    }
  });
});

/**
 * 获取文件夹列表
 */
router.post("/getFilesNameList", (req, res, next) => {
  // 要将文件夹列表，以及文件夹path中文件，数据都打平，做成数组
  let files = require("./utils_Fn/file.js");
  let data = files;
  if (req.body) {
    if (req.body.name) {
      data = files.filter((item) => item.name.includes(req.body.name));
    }
  }
  res.send(data);
});

/**
 * 新增
 */
router.post("/addNavData", (req, res, next) => {
  console.log(req.body);
  let reqData = req.body;
  //防止未分类
  if (!reqData.f_class) {
    reqData.f_class = "index";
  }
  // 没有id的增加随机id
  if (!reqData.id) {
    reqData.id = "cs" + Math.floor(Math.random() * 1000000);
  }
  //  文件类型
  let type = ".json";
  //  文件路径
  let dataFilePath = `./json/nav/files/${reqData.f_dirName}/${reqData.f_class}${type}`;
  //  文件夹列表
  let dirList = readdirSync("./json/nav/files");
  //   校验文件是否存在
  let index = dirList.findIndex((item) => item === reqData.f_dirName);
  //  创建文件 初始化数据
  let data = [{ ...reqData }];
  if (dirList.length > 0 && index >= 0) {
    // 存在文件夹
    let filesList = readdirSync("./json/nav/files/" + dirList[index]);
    console.log("当前文件夹：" + dirList[index] + "列表:" + filesList);
    let fileIndex = filesList.findIndex(
      (item) => item.split(".")[0] === reqData.f_class
    );
    if (fileIndex >= 0) {
      readFile(dataFilePath, "utf8", (err, data) => {
        if (err) {
          console.error(err);
          res.error({ msg: "操作失败" });
          return;
        }
        let curFileData = JSON.parse(data);
        let curIndex = curFileData.findIndex((item) => item.id === reqData.id);
        if (curIndex >= 0) {
          curFileData[curIndex] = JSON.parse(JSON.stringify(reqData));
        } else {
          curFileData.push(reqData);
        }
        f_dataWriteFile(res, dataFilePath, curFileData, reqData.id);
      });
    } else {
      f_dataWriteFile(res, dataFilePath, data, reqData.id);
    }
  } else {
    //不存在，创建文件夹
    mkdir(
      `./json/nav/files/${reqData.f_dirName}`,
      { recursive: true },
      (err) => {
        if (err) {
          console.error("创建文件夹失败：" + err);
          res.error({ msg: "操作失败" });
          return;
        }
        f_dataWriteFile(res, dataFilePath, data, reqData.id);
      }
    );
  }
});

// 写入方法
function f_dataWriteFile(res, path, data, id) {
  console.log("114djhfjkdsjfksj", data);
  if (typeof data !== "string") {
    data = JSON.stringify(data);
  }
  // 写入数据
  writeFile(path, data, (err) => {
    if (err) {
      console.error("创建文件或者写入文件失败：" + err);
      res.error({ msg: "操作失败" });
      return;
    }
    // 响应
    res.send({ msg: "操作成功", id });
  });
}

module.exports = router;
